home *** CD-ROM | disk | FTP | other *** search
- #! /bin/sh
-
- # Based on previous version of lslR
- # Modified by Tomas Novak <tnovak@ipex.cz> April 2000
- # (to allow spaces in filenames)
- #
- # It's assumed that lslR was generated in C locale.
- LC_ALL=C
- export LC_ALL=C
-
- AWK=mawk
-
- mclslRfs_list () {
- case "$1" in
- *.lzma) MYCAT="lzma -dc";;
- *.bz2) MYCAT="bzip2 -dc";;
- *.gz) MYCAT="gzip -dc";;
- *.z) MYCAT="gzip -dc";;
- *.Z) MYCAT="gzip -dc";;
- *) MYCAT="cat";;
- esac
-
- $MYCAT "$1" | $AWK '
- BEGIN {
- dir="";
- # Pattern to match 8 first fields.
- rx = "[^ ]+[ ]+";
- rx = "^" rx rx rx rx rx rx rx rx;
- }
- /^total\ [0-9]*$/ { next }
- /^$/ { next }
- /^[^ ].*:$/ {
- if ($0 ~ /^\//) dir=substr($0, 2);
- else dir=$0;
- if (dir ~ /\/:$/) sub(/:$/, "", dir);
- else sub(/:$/, "/", dir);
- next;
- }
- ( $9 != "" ) {
- # gensub() is not portable.
- name=$0
- sub(rx, "", name)
- # Cannot assign to $9, or spaces in the filename would be reduced.
- attr=substr($0, 1, length($0)-length(name))
- printf "%s%s%s\n", attr, dir, name
- }'
- }
-
- case "$1" in
- list) mclslRfs_list "$2"; exit 0;;
- esac
- exit 1
-